Remove vestigial parity / structural-diff migration scaffolding#503
Merged
jamesfredley merged 1 commit intomasterfrom May 3, 2026
Merged
Remove vestigial parity / structural-diff migration scaffolding#503jamesfredley merged 1 commit intomasterfrom
jamesfredley merged 1 commit intomasterfrom
Conversation
ParityCheckGuideTask, StructuralDiffGuidesTask and their AdHocFixtureDiff
helper were one-shot migration scaffolding: they compared HTML rendered
by our local renderer against vendored snapshots of the legacy
guides.grails.org output to verify the new pipeline reproduced the same
shape. With the migration complete and the guides themselves
substantially rewritten on grails.apache.org, structural parity with the
legacy site is no longer the design goal - "matches the old HTML" is now
noise instead of signal.
Concrete signals that this code has finished its job:
- Only one parity-baseline snapshot was ever vendored
(creating-your-first-grails-app-v6/index.html, ~2900 lines), so the
parity check could only run for a single guide out of 93.
- parityCheckAllGuides was registered but NEVER added to verifyAllGuides
(or any other aggregate). It only ran when invoked by hand.
- StructuralDiffGuidesTask.groovy carried a TODO ("Integrate captured
production baseline snapshots from https://guides.grails.org/<guide>/
<version>/ once they are committed.") - the additional baselines that
would have made it useful were never landed.
This change deletes:
- buildSrc/src/main/groovy/website/qa/AdHocFixtureDiff.groovy
- buildSrc/src/main/groovy/website/gradle/tasks/ParityCheckGuideTask.groovy
- buildSrc/src/main/groovy/website/gradle/tasks/StructuralDiffGuidesTask.groovy
- buildSrc/src/test/groovy/website/gradle/tasks/StructuralDiffGuidesTaskSpec.groovy
- buildSrc/src/test/resources/parity-baseline/creating-your-first-grails-app-v6/index.html
And updates the wire-up:
- RenderGuidesPlugin: drop PARITY_AGGREGATE_TASK / PARITY_BASELINE_ROOT
constants, the per-guide parityCheckGuide_* registration loop, the
parityTaskNames field on Wiring, and the parityCheckAllGuides aggregate
registration. Render-only configuration remains intact.
- GrailsWebsitePlugin: drop the StructuralDiffGuidesTask import,
registration, and verifyAllGuides dependency.
- AcceptanceReportTask: drop the structuralReportFile input, the
StructuralDiffGuidesTask dependsOn wiring, and the structuralDiffGuides
column from build/reports/acceptance.csv (header, row, AcceptanceRow,
parsing, verdict merging, and detail summarization). The remaining
gates (asciidoctorWarningGate, crawlBuiltGuides, cspScan) are unchanged.
- AcceptanceReportTaskSpec: drop the per-test structural-diff CSV writes
and adjust the expected acceptance.csv header / row strings.
- README: update the "verifyAllGuides" description so it no longer claims
to run a structural diff step.
Kept on purpose:
- GenerateRedirectStubsTask and GenerateRedirectsManifestTask remain
untouched. They are NOT migration scaffolding - they generate the
meta-refresh stubs deployed to the legacy guides.grails.org gh-pages
branch and the _redirects.json manifest published with the main site,
both of which are still load-bearing for legacy URL traffic.
Verified:
- ./gradlew :buildSrc:test --tests AcceptanceReportTaskSpec -> all 4 pass
- ./gradlew build validateGuides -x :buildSrc:test -> BUILD SUCCESSFUL,
validateGuides 93 guide(s) parsed, 0 errors
- ./gradlew help --task verifyAllGuides -> task graph still resolves
- The 5 unrelated :buildSrc:test failures in RecordCompanionReleaseTaskSpec
and ValidateGuidesTaskSpec are pre-existing on master (584dbff) and
are not caused by this change.
Net diff: 10 files changed, +10 / -3763 lines.
Assisted-by: claude-code:claude-opus-4-7
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Removes legacy HTML parity / structural-diff migration scaffolding from the Gradle build, now that “matching guides.grails.org HTML” is no longer a useful verification goal.
Changes:
- Delete the parity-check / structural-diff tasks, fixtures, and baseline snapshot used for legacy structural comparison.
- Simplify the acceptance report pipeline by removing the structural-diff gate column, inputs, and task dependencies.
- Update plugin wiring and README to reflect the reduced verification harness.
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| buildSrc/src/test/resources/parity-baseline/creating-your-first-grails-app-v6/index.html | Removes the only vendored legacy HTML baseline snapshot used for parity checks. |
| buildSrc/src/test/groovy/website/gradle/tasks/StructuralDiffGuidesTaskSpec.groovy | Deletes tests for the removed structural-diff task. |
| buildSrc/src/test/groovy/website/gradle/tasks/AcceptanceReportTaskSpec.groovy | Updates acceptance-report tests for the removed structural-diff column/input. |
| buildSrc/src/main/groovy/website/qa/AdHocFixtureDiff.groovy | Deletes the structural comparison harness used by parity checks. |
| buildSrc/src/main/groovy/website/gradle/tasks/StructuralDiffGuidesTask.groovy | Deletes structural fingerprinting/diffing task and report emission. |
| buildSrc/src/main/groovy/website/gradle/tasks/ParityCheckGuideTask.groovy | Deletes per-guide parity check task against legacy snapshots. |
| buildSrc/src/main/groovy/website/gradle/tasks/AcceptanceReportTask.groovy | Removes structural-diff gate integration from acceptance report generation. |
| buildSrc/src/main/groovy/website/gradle/RenderGuidesPlugin.groovy | Removes parity aggregate wiring/constants and per-guide parity task registration. |
| buildSrc/src/main/groovy/website/gradle/GrailsWebsitePlugin.groovy | Removes structural-diff task registration and verifyAllGuides dependency. |
| README.md | Updates verifyAllGuides description to remove mention of structural diff. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Removes ~3750 lines of vestigial migration scaffolding that compared our locally-rendered HTML against vendored snapshots of the legacy
guides.grails.orgoutput. With the migration complete and the guides themselves substantially rewritten on grails.apache.org, structural parity with the legacy site is no longer the design goal - "matches the old HTML" is now noise instead of signal.Net diff: 10 files changed, +10 / -3763 lines.
Concrete signals this code finished its job
creating-your-first-grails-app-v6/index.html, ~2900 lines), so the parity check could only run for a single guide out of 93.parityCheckAllGuideswas registered but never added toverifyAllGuides(or any other aggregate). It only ran when invoked by hand.StructuralDiffGuidesTask.groovycarried a TODO ("Integrate captured production baseline snapshots fromhttps://guides.grails.org/<guide>/<version>/once they are committed.") - the additional baselines that would have made it useful were never landed.Deleted
buildSrc/src/main/groovy/website/qa/AdHocFixtureDiff.groovybuildSrc/src/main/groovy/website/gradle/tasks/ParityCheckGuideTask.groovybuildSrc/src/main/groovy/website/gradle/tasks/StructuralDiffGuidesTask.groovybuildSrc/src/test/groovy/website/gradle/tasks/StructuralDiffGuidesTaskSpec.groovybuildSrc/src/test/resources/parity-baseline/creating-your-first-grails-app-v6/index.htmlWire-up updates
RenderGuidesPlugin: dropPARITY_AGGREGATE_TASK/PARITY_BASELINE_ROOTconstants, the per-guideparityCheckGuide_*registration loop, theparityTaskNamesfield onWiring, and theparityCheckAllGuidesaggregate registration. Render-only configuration remains intact.GrailsWebsitePlugin: drop theStructuralDiffGuidesTaskimport, registration, andverifyAllGuidesdependency.AcceptanceReportTask: drop thestructuralReportFileinput, theStructuralDiffGuidesTaskdependsOnwiring, and thestructuralDiffGuidescolumn frombuild/reports/acceptance.csv(header, row,AcceptanceRow, parsing, verdict merging, and detail summarization). The remaining gates (asciidoctorWarningGate,crawlBuiltGuides,cspScan) are unchanged.AcceptanceReportTaskSpec: drop the per-test structural-diff CSV writes and adjust the expectedacceptance.csvheader / row strings.README: update theverifyAllGuidesdescription so it no longer claims to run a structural diff step.Kept on purpose
GenerateRedirectStubsTaskandGenerateRedirectsManifestTaskremain untouched. They are NOT migration scaffolding - they generate the meta-refresh stubs deployed to the legacyguides.grails.orggh-pages branch and the_redirects.jsonmanifest published with the main site, both of which are still load-bearing for legacy URL traffic.Verification
./gradlew :buildSrc:test --tests AcceptanceReportTaskSpec-> all 4 pass../gradlew build validateGuides -x :buildSrc:test->BUILD SUCCESSFUL,validateGuidesreports93 guide(s) parsed, 0 errors../gradlew help --task verifyAllGuides-> task graph still resolves.The 5 unrelated
:buildSrc:testfailures inRecordCompanionReleaseTaskSpec(4) andValidateGuidesTaskSpec(1) are pre-existing on master (584dbff3e1) and are not caused by this change. Confirmed by git-stashing this branch and rerunning:buildSrc:testagainst unmodified master - same five failures.